package com.test.resource;
import java.io.InputStream;

/**
 * Resource接口声明了对资源的操作方法
 * 它主要用于抽象不同类型的资源访问方式，如文件系统资源、网络资源等
 */
public interface Resource {

    /**
     * 检查资源是否存在
     *
     * @return 如果资源存在返回true，否则返回false
     */
    boolean exists();

    /**
     * 检查资源是否可读
     * 这通常意味着资源不仅存在，而且具有可读权限
     *
     * @return 如果资源可读返回true，否则返回false
     */
    boolean isReadable();

    /**
     * 获取资源的输入流
     * 通过此方法可以读取资源的内容
     *
     * @return 资源的输入流
     * @throws Exception 如果无法获取输入流，则抛出异常
     */
    InputStream getInputStream() throws Exception;

    /**
     * 获取资源的描述信息
     * 这个方法主要用于提供资源的详细信息，用于调试或日志记录
     *
     * @return 资源的描述信息
     */
    String getDescription();

}
